Retour index

Traduction d'une boucle

faire tant que  en assembleur 51

Retour niveau sup

Le dictionnaire des variables correspondant à l'algorithme est (visualiser l'algorithme):

Nom

Type

Catégorie

Allocation

num

entier.b

variable

R2

denum

entier.b

variable

R1

result

entier.b

variable

R0

denum.result

entier.b

variable

A

var intermédiaire

entier.b

variable

B

 

Le choix de l'allocation est arbitraire. Ce choix est généralement guidé par les contraintes imposées par le cahier des charges. La notation entier.b n'est pas normalisée. Elle est appliquée au choix qui est fait ici d'implanter et algorithme en assembleur 51. Enfin, le fait qu'en assembleur, il n’est possible que de faire une opération par instruction, il est nécessaire d'ajouter une variable intermédiaire denum.result allouée dans A. L'utilisation de B est imposée par la multiplication en assembleur 51. La traduction de l'algorithme donne :

 

 debut:  mov R2,#05h

        mov R1,#02h

        mov R0,#ffh    ; result <- 0

 

faire:      inc R0     ; result <- result + 1

            mov B,R0

            mov B,R1

            mov A,R0

            mul AB     ; A <- demum.reslut

            subb A,R2  ;  test si denum.result-num<0

            jc faire

        jnz sivrai     ; si égalité

finsi:  mov P0,R0

        ret            ; fin du code

sivrai: dec R0

        ljmp finsi

   

Retour index

Suite